package com.english.service;

import com.english.entity.ClassAttendance;
import com.english.entity.AttendanceLog;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

/**
 * 签到签退服务接口
 *
 * @author wlq
 * @since 2025-08-08
 */
public interface AttendanceService {

    /**
     * 学生签到
     *
     * @param studentId 学生ID
     * @param adminId 管理员ID
     * @return 签到结果
     */
    Map<String, Object> signIn(Long studentId, Long adminId);

    /**
     * 学生签退
     *
     * @param studentId 学生ID
     * @param adminId 管理员ID
     * @return 签退结果
     */
    Map<String, Object> signOut(Long studentId, Long adminId);

    /**
     * 获取今日考勤记录
     *
     * @param date 日期
     * @return 考勤记录列表
     */
    List<ClassAttendance> getTodayAttendance(LocalDate date);

    /**
     * 获取学生考勤历史
     *
     * @param studentId 学生ID
     * @return 考勤记录列表
     */
    List<ClassAttendance> getStudentAttendanceHistory(Long studentId);

    /**
     * 获取今日统计
     *
     * @param date 日期
     * @return 统计信息
     */
    Map<String, Object> getTodayStats(LocalDate date);

    /**
     * 获取学生签到签退日志
     *
     * @param studentId 学生ID
     * @return 日志列表
     */
    List<AttendanceLog> getStudentAttendanceLogs(Long studentId);

    /**
     * 获取今日签到签退日志
     *
     * @param date 日期
     * @return 日志列表
     */
    List<AttendanceLog> getTodayAttendanceLogs(LocalDate date);

    /**
     * 获取最近的签到签退日志
     *
     * @param limit 限制条数
     * @return 日志列表
     */
    List<AttendanceLog> getRecentAttendanceLogs(Integer limit);
} 